Chiuso. Questa domanda richiede dettagli o chiarezza. Attualmente non accetta risposte. Vuoi migliorare questa domanda? Aggiungi dettagli e chiarisci il problema modificando questo post. Chiuso 1 anno fa. Migliora questa domanda Sto eseguendo una verifica del codice e voglio ottenere i primi 3 valori dal mio array specificando l'indice iniziale e ottenendo solo i primi (3 o possono essere di qualsiasi lunghezza) valori dall'indice iniziale. Ho provato questo codice e funziona ma la struttura del codice è troppo lunga, quindi come posso renderlo più breve in modo che sia facile da capire. int n = 10; doppia firma = nuova doppia [] {1, 1, 1}; double [] ret = new double [n]; doppia somma = 0; ret [0] = firma [0]; ret [1] = firma [1]; ret [2] = firma [2]; int x, i; for (i = 0; i
2021-01-31 08:20:08
Usando LINQ puoi provare qualcosa di simile: valori var = array.Skip (indice) .Prese) .ToArray (); Dove index è l'indice del primo articolo en il numero degli articoli che vuoi scegliere. Per esempio. https://dotnetfiddle.net/Pk1rwY Come nota a margine. L'uso di LINQ non significa che il codice sarebbe più veloce. Sarebbe più compatto / leggibile, ecc. Per valutare quanto sia performante il tuo codice devi usare qualcosa come BenchmarkDotNet. | Nessuna soluzione Linq: private static T [] Extract(T [] source, int fromIndex, int length) { if (null == sorgente) lancia una nuova ArgumentNullException (nameof (source)); altrimenti se (daIndex <0) lancia una nuova ArgumentOutOfRangeException (nameof (fromIndex), "Dall'indice deve essere non negativo"); altrimenti se (lunghezza <0) lancia una nuova ArgumentOutOfRangeException (nameof (length), "La lunghezza deve essere non negativa"); if (fromIndex> = source.Length || length == 0) restituisce nuovo T [0]; T [] risultato = nuovo T [Math.Min (length, source.Length - fromIndex)]; Array.Copy (source, fromIndex, risultato, 0, result.Length); risultato di ritorno; } Poi doppia [] firma = nuova doppia [] {0, 1, 2, 3, 4, 5}; double [] ret = Extract (firma, 3, 2); Console.Write (string.Join (",", ret)); Risultato: 3, 4 | Dalla tua domanda, devi sfruttare gli operatori .Take e .Skip. var result = array.Skip (startingIndex) .Take (numberOfElements); Dal tuo codice quindi, sembra che tu stia cercando di fare qualcosa di diverso, vale a dire sommare gli elementi. L'operatore .Sum potrebbe essere di aiuto qui. | Non è la risposta che stai cercando? Sfoglia altre domande contrassegnate con c # arrays linq o fai la tua domanda.